Microcontrollers function to replace mechanical and electromechanical components in a variety of applications and devices. Since they were first introduced approximately 30 years ago, microcontrollers have evolved to the point where they can be used for increasingly complex applications. Some microcontrollers in use today are also programmable, expanding the number of applications in which they can be used.
However, even though there are a large number of different types of microcontrollers available on the market with a seemingly wide range of applicability, it is still often difficult for a designer to find a microcontroller that is particularly suited for a particular application. Unique aspects of the intended application may make it difficult to find an optimum microcontroller, perhaps necessitating a compromise between the convenience of using an existing microcontroller design and less than optimum performance.
In those cases in which a suitable microcontroller is found, subsequent changes to the application and new requirements placed on the application will likely affect the choice of microcontroller. The designer thus again faces the challenge of finding a suitable microcontroller for the intended application.
One solution to the problems described above is to design a microcontroller customized for the intended application. However, this solution may still not be practical because of the time needed to develop a custom microcontroller and the cost of doing so. In addition, should the design of the intended application be changed, it may also be necessary to change the design of the custom microcontroller, further increasing costs and lead times.
A programmable analog system architecture that is suited for a variety of applications and that can reduce development time and expenses is described in the co-pending, commonly owned U.S. patent application Ser. No. 09/929,891, filed Aug. 14, 2001, by M. Mar et al., and entitled “Programming Architecture for a Programmable Analog System,” hereby incorporated by reference. The analog system architecture is generally referred to as a programmable analog “system-on-a-chip” architecture.
The programmable analog system architecture described in the reference introduces a set of tailored analog blocks and elements that can be configured and reconfigured in different ways to implement a variety of different analog functions. The programmable analog system architecture is integrated with a microcontroller that provides sequencing and programming instructions.
The analog blocks are arranged in an array of columns and rows on a single integrated circuit, or chip. The analog blocks can be electrically coupled to each other in different combinations to perform different analog functions. The analog functions that can be performed include, for example, an amplifier function, a digital-to-analog converter function, an analog-to-digital converter function, an analog driver function, a low band pass filter function, and a high band pass filter function.
Different combinations of analog blocks are selectively and electrically coupled depending on the analog function to be achieved. Thus, there is a need to maintain phase and frequency alignment of the clock signals used by the combination of analog blocks (“synchronized” will be used herein to refer to clock signals at the same phase and frequency). For example, a combination of analog blocks may include blocks from one column that are coupled with blocks from another column. In this case, there is a need to maintain phase and frequency alignment of the clock signals for all of the blocks in the combination of blocks regardless of the column the blocks are in.
Synchronizing clocks signals across columns of analog blocks is made more complicated because blocks from multiple columns may be used to perform one function at the same time that blocks from other columns are being used to perform a different function. For example, consider an array of analog blocks having four columns designated columns 0, 1, 2 and 3. A first function may be performed using blocks from columns 0 and 1, and a second function may also be performed in parallel using blocks from columns 2 and 3. The first and second functions may be performed using clocks signals at different frequencies. The clock signals supplied to the blocks in the first combination of blocks (that is, the blocks from columns 0 and 1) need to be aligned at a first frequency, and the blocks in the second combination of blocks (the blocks from columns 2 and 3) need to be aligned at a second frequency. In addition, the phases of the clock signals supplied to the first combination and to the second combination of analog blocks should also be aligned; that is, it is desirable that the clock signals to the first and second combination of blocks be in the same phase even though they are at different frequencies. If phase alignment is not maintained, problems can occur when analog blocks attempt to communicate with each other.
Moreover, as described in the reference, a combination of analog blocks can be dynamically changed to achieve a different analog function. For example, a new combination of analog blocks may be configured to perform a new (different) function by electrically coupling and decoupling selected blocks to and from an existing combination of blocks. The change in function may also require a change to the frequency of the clock signals being supplied to the new combination of analog blocks. As a result, some or all of the analog blocks in the new combination may be switched from one frequency of clock signals to a new frequency. Accordingly, there is also a need to establish and maintain phase and frequency alignment of the clock signals supplied to the new combination of analog blocks after the change in configuration and function, without affecting other analog blocks (or combinations of analog blocks) performing other functions at the same time.
There are other factors to consider in developing a solution to the above needs. These factors include the limited area available for placing components and for routing signals between components in devices as small as microcontrollers, and the desire to reduce costs (e.g., manufacturing costs) to the extent practical.